import json
import re


def main(input_str: str):
    """
    解析输入的文本，提取小说章节正文内容。

    :param input_str: 包含TITLE, AUTHOR, TEXT三部分的原始字符串
    :return: 包含提取出的章节内容的字典
    """
    # 初始化变量
    title = ""
    author = ""
    text_list = []

    # 按行分割输入
    lines = input_str.splitlines()

    current_key = None
    text_content = ""

    for line in lines:
        line = line.strip()
        if line.startswith("TITLE:"):
            current_key = "TITLE"
            title = line[6:].strip()
        elif line.startswith("AUTHOR:"):
            current_key = "AUTHOR"
            author = line[7:].strip()
        elif line.startswith("TEXT:"):
            current_key = "TEXT"
            # TEXT 后面可能直接跟着内容
            rest = line[5:].strip()
            if rest:
                text_content += rest + "\n"
        else:
            if current_key == "TEXT":
                text_content += line + "\n"

    # 如果 TEXT 是 JSON 数组，尝试解析
    if text_content.strip():
        try:
            # 移除可能的逗号并提取数组
            # 使用正则表达式提取完整的JSON数组
            json_match = re.search(r'\[.*\]', text_content, re.DOTALL)
            if json_match:
                # 修复单引号为双引号以符合JSON格式
                json_text = json_match.group().replace("'", '"')
                text_list = json.loads(json_text)
        except json.JSONDecodeError:
            # 如果标准JSON解析失败，尝试使用eval解析Python字典格式
            try:
                text_list = eval(json_match.group()) if json_match else []
            except:
                pass

    # 提取章节内容
    lines = []
    capture = False

    for item in text_list:
        if 'text' in item:
            text = item['text']
            # 去掉文本中的引号
            text = text.replace('"', '')
            # 检测章节标题，开始捕获
            if text.startswith('第') and ('章' in text or '節' in text):
                capture = True
                # 去掉"第xx章"前面的内容，只保留章节标题及之后的内容
                chapter_match = re.search(r'第.*?[章節].*', text)
                if chapter_match:
                    lines.append(chapter_match.group())
                else:
                    lines.append(text)
            elif capture:
                # 如果已经开始捕获，检查是否遇到结束标记
                if text.startswith('上一章') or text.startswith('目录') or text.startswith('下一页'):
                    break
                lines.append(text)

    # 拼接结果
    result_text = "\n".join(lines)

    return {"result": result_text[0:8]}


# 示例输入
data = """
TITLE: 宿命之环(爱潜水的乌贼)-第一章 外乡人_豌豆文学
AUTHOR:
TEXT:

[{'text': '宿命之环(爱潜水的乌贼)-第一章 外乡人_豌豆文学'}, {'text': '当前位置:豌豆文学>玄幻魔法>宿命之环> 第一章 外乡人'}, {'text': '* 标记书签 |, * 章节报错 |, * 阅读记录,'}, {'text': '阅读设置(推荐配合 快捷键[F11] 进入全屏沉浸式阅读)'}, {'text': '设置X'}, {'text': '* 阅读主题, * 正文字体雅黑宋体楷体启体思源苹方, * 字体大小A-20A+, * 页面宽度-100%+,'}, {'text': '保存取消'}, {'text': '第一章 外乡人(1 / 6)'}, {'text': '“我是一个失败者,几乎不怎么注意阳光灿烂还是不灿烂,因为没有时间。'}, {'text': '“我的父母没法给我提供支持,我的学历也不高,孤身一人在城市里寻找着未来。'}, {'text': '“我找了很多份工作,但都没能被雇佣,可能是没谁喜欢一个不擅长说话,不爱交流,也未表现出足够能力的人。'}, {'text': '“我有整整三天只吃了两个面包,饥饿让我在夜里无法入睡,幸运的是,我提前交了一個月房租,还能继续住在那个黑暗的地下室里,不用去外面承受冬季那异常寒冷的风。'}, {'text': '“终于,我找到了一份工作,在医院守夜,为停尸房守夜。'}, {'text': '“医院的夜晚比我想象得还要冷,走廊的壁灯没有点亮,到处都很昏暗,只能靠房间内渗透出去的那一点点光芒帮我看见脚下。'}, {'text': '“那里的气味很难闻,时不时有死者被塞在装尸袋里送来,我们配合着帮他搬进停尸房内。'}, {'text': '“这不是一份很好的工作,但至少能让我买得起面包,夜晚的空闲时间也可以用来学习,毕竟没什么人愿意到停尸房来,除非有尸体需要送来或者运走焚烧,当然,我还没有足够的钱购买书籍,目前也看不到攒下钱的希望。'}, {'text': '“我得感谢我的前任同事,如果不是他突然离职,我可能连这样一份工作都没法获得。'}, {'text': '“我梦想着可以轮换负责白天,现在总是太阳出来时睡觉,夜晚来临后起床,让我的身体变得有点虚弱,我的脑袋偶尔也会抽痛。'}, {'text': '“有一天,搬工送来了一具新的尸体。'}, {'text': '“听别人讲,这是我那位突然离职的前同事。'}, {'text': '“我对他有点好奇,在所有人离开后,抽出柜子,悄悄打开了装尸袋。'}, {'text': '“他是个老头,脸又青又白,到处都是皱纹,在非常暗的灯光下显得很吓人。'}, {'text': '“他的头发不多,大部分都白了,衣服全部被脱掉,连一块布料都没有给他剩下。'}, {'text': '“对于这种没有家人的死者,搬工们肯定'}, {'text': '上一章 目录 +书签 下一页'}, {'text': '本网站为网友提供小说上传储存空间平台,为网友提供在线阅读交流、txt下载,平台上的所有文学作品均来源于网友的上传 用户上传的文学作品均由网站程序自动分割展现,无人工干预,本站自身不编辑或修改网友上传的内容(请上传有合法版权的作品) 如发现本站有侵犯权利人版权内容的,请向本站投诉,一经核实,本站将立即删除相关作品并对上传人ID账号作封号处理'}]
"""

# 调用函数并输出结果
result = main(data)
print(result)
